package com.tianji.learning.service;

import com.tianji.common.domain.dto.PageDTO;
import com.tianji.learning.domain.dto.QuestionFormDTO;
import com.tianji.learning.domain.po.InteractionQuestion;
import com.baomidou.mybatisplus.extension.service.IService;
import com.tianji.learning.domain.po.QuestionAdminPageQuery;
import com.tianji.learning.domain.vo.QuestionAdminVO;
import com.tianji.learning.domain.vo.QuestionVO;
import com.tianji.learning.query.QuestionPageQuery;

/**
 * <p>
 * 互动提问的问题表 服务类
 * </p>
 *
 * @author wangyuqing
 * @since 2024-08-25
 */
public interface IInteractionQuestionService extends IService<InteractionQuestion> {
    /**
     * 1. 新增互动提问
     *
     * @param questionFormDTO
     */
    void addInteractionQuestion(QuestionFormDTO questionFormDTO);

    /**
     * 2.根据ID查询问题详情
     *
     * @param id 问题ID
     */
    QuestionVO queryQuestionById(Long id);

    /**
     * 3.分页查询问题详情
     *
     * @param pageQuery 分页查询参数对象
     */
    PageDTO<QuestionVO> queryQuestionPage(QuestionPageQuery pageQuery);
    /**
     * 4、管理端-分页查询互动问题（Day5 - 随堂4）
     * @param query
     * @return
     */
    PageDTO<QuestionAdminVO> adminPageQuery(QuestionAdminPageQuery query);
    /**
     * 5、管理端-根据ID查询问题详情（Day5 - 随堂4）
     * @param id
     * @return
     */
    QuestionAdminVO queryQuestionByIdAdmin(Long id);

    /**
     * 6.根據ID删除问题
     * @param id
     */
    void deleteById(Long id);
    /**
     * 7.根據ID修改问题
     * @param id
     */
    void updateQuestion(Long id, QuestionFormDTO questionDTO);

    /**
     * 8.修改问题的隐藏状态
     * @param id
     * @param hidden
     */
    void hiddenQuestion(Long id, Boolean hidden);
}
